using B.S.Domain.Dto.AICustomerServiceDTO;

namespace B.S.Data.MES.API.Services
{
    /// <summary>
    /// 数据查询服务接口
    /// </summary>
    public interface IDataQueryService
    {
        /// <summary>
        /// 根据用户问题智能查询数据
        /// </summary>
        /// <param name="userQuestion">用户问题</param>
        /// <returns>查询结果和回答</returns>
        Task<DataQueryResult> QueryDataByQuestion(string userQuestion);

        /// <summary>
        /// 获取工单信息
        /// </summary>
        /// <param name="workCode">工单编号</param>
        /// <returns>工单详细信息</returns>
        Task<DataQueryResult> GetWorkOrderInfo(string? workCode = null);

        /// <summary>
        /// 获取物料信息
        /// </summary>
        /// <param name="materialCode">物料编号</param>
        /// <returns>物料信息</returns>
        Task<DataQueryResult> GetMaterialInfo(string? materialCode = null);

        /// <summary>
        /// 获取客户信息
        /// </summary>
        /// <param name="customerName">客户名称</param>
        /// <returns>客户信息</returns>
        Task<DataQueryResult> GetCustomerInfo(string? customerName = null);

        /// <summary>
        /// 获取仓库信息
        /// </summary>
        /// <param name="warehouseName">仓库名称</param>
        /// <returns>仓库信息</returns>
        Task<DataQueryResult> GetWarehouseInfo(string? warehouseName = null);

        /// <summary>
        /// 获取生产线信息
        /// </summary>
        /// <param name="productionLineName">生产线名称</param>
        /// <returns>生产线信息</returns>
        Task<DataQueryResult> GetProductionLineInfo(string? productionLineName = null);

        /// <summary>
        /// 获取质量检验信息
        /// </summary>
        /// <param name="examineType">检验类型</param>
        /// <returns>质量检验信息</returns>
        Task<DataQueryResult> GetQualityInfo(string? examineType = null);

        /// <summary>
        /// 获取账户信息
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <returns>账户信息</returns>
        Task<DataQueryResult> GetAccountInfo(string? userName = null);

        /// <summary>
        /// 获取系统统计信息
        /// </summary>
        /// <returns>系统统计信息</returns>
        Task<DataQueryResult> GetSystemStatistics();
    }
}

